# 字典
# 创建字典
# a = {}
# print(type(a))
# b = dict()
# print(type(b))

# 设置初始值
# key的类型有约束，value没有
# a = {'id':1, 'name':'zhangsan'}
# print(a)

# a = {
#     'id':1,
#     'name':'zhangsan'
# }
# print(a)

# 使用 in 判断查找key
# a = {
#     'id':1,
#     'name':'yss'
# }
# print('id' in a)
# print('class_id' in a)

# not in 逻辑取反
# print('id' not in a)
# print('class_id' not in a)

# 使用 [] 根据key获取value
# a = {
#     'id':1,
#     'name':'yss',
#     100:'aa'
# }
# print(a['id'])
# print(a['name'])
# print(a[100])

# 新增/修改操作
# a = {
#     'id':1,
#     'name':'yss'
# }
# 插入新的键值
# a['score'] = 90
# print(a)
#
# # 根据key修改value
# a['score'] = 60
# print(a)

# [] 不存在就创建新的键值对
# 存在就修改key对应的value

# pop删除
# a.pop('name')
# print(a)

# 遍历字典
# 字典是哈希表，进行增删改查效率高，遍历效率低一些
# 字典的key不能重复

# for循环遍历
a = {
    'id':1,
    'name':'yss',
    'score':100
}
for key in a:
    print(key, a[key])

# C++哈希表键值对存储顺序是无序的
# python 打印按照插入顺序进行

# keys 获取字典所有的key
# values 获取字典所有的value
# items 获取字典所有的键值对
print(a.keys())
print(a.values())
print(a.items())

for key, value in a.items():
    print(key, value)

# 列表和字典不能作为字典的key！！
# 不可变的对象，可以作为哈希表的key
# 可变的对象，不可以作为哈希表的key
